package br.com.aplic.teste.integracao;

import java.lang.reflect.ParameterizedType;
import java.util.Collection;

import org.hibernate.Criteria;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public abstract class DAOGenerico<T extends Entidade> extends HibernateDaoSupport implements CRUD<T>{
	
	Class<T> reflectionObject = (Class<T>) ((ParameterizedType) getClass()  
            .getGenericSuperclass()).getActualTypeArguments()[0];

	@Override
	public Collection<T> consultar() {
		getHibernateTemplate().loadAll(reflectionObject);
		return getHibernateTemplate().loadAll(reflectionObject);
	}

	@Override
	public void salvar(T entidade) {
		getHibernateTemplate().save(reflectionObject);		
	}

	@Override
	public T consultar(Entidade entidade) {		
		return getHibernateTemplate().get(reflectionObject, entidade.getId());
	}

	@Override
	public Collection<T> consultar(Criteria ct) {
		return null;
	}
	
}
